home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 22
/
Cream of the Crop 22.iso
/
doom
/
quake1.zip
/
ANTICAMP.ZIP
/
ANTICAMP.TXT
< prev
next >
Wrap
Text File
|
1996-10-13
|
10KB
|
210 lines
AntiCamper v1.0
by Harlequin
(dtebben@alumni.caltech.edu)
How It Works
------------
All items which are tagged as camper-sensitive, which by default
include the rocket launcher, grenade launcher, quad damage, red armor,
and lightning gun, look around themselves about every 8 seconds. They
have two detection ranges: a long range that includes only the item's
line-of-sight, and a shorter range that can detect players even without
LOS. If a player is detected for two consecutive think times, they are
issued a warning of the form "**CAMPER WARNING FROM (item name)", their
screen flashes and a sound is played. If they are still within detection
range for a third think time, they are identified as a camper. All their
armor and defensive powerups are removed, they are paralyzed, and their
health is set to 1. A message is then sent to all players in the game,
telling them who and where the camper is. The first player to frag the
camper gets 3 frags instead of the normal 1, hopefully precipitating a
free-for-all as everyone heads for the helpless camper. Campers also
lose 2 frags each time they are busted.
AntiCamper works only in deathmatch mode 1 (the standard DM mode where
weapons respawn). Item respawn noises for camper-sensitive items have
been disabled, simply because they help to alert campers that the item
they're guarding is available again. Items detect campers even if the
item is not currently respawned (it's still there, you just can't see
or touch it). Item respawn times for camper-sensitive things are
somewhat erratic, +/- 4 seconds or so, while this mod is running. This
is an unavoidable consequence of giving items think times -- I see it
as a feature rather than a bug, because it makes camping that much
harder.
When a client connects to a server that is running AntiCamper, they
are informed of its presence via a centerprinted message.
How To Install AntiCamper
-------------------------
To install AntiCamper, you must have QCCDOS, the DOS-based QuakeC
compiler; try looking at the following places if you don't have QCC:
ftp://ftp.cdrom.com/pub/idgames/idstuff/source
ftp://ftp.cdrom.com/pub/idgames2/quakec
ftp://ftp.cdrom.com/pub/idgames2/utils
Make a new subdir named "anticamp" off of your Quake directory and copy
all the files from V101QC (a subdirectory of QCC) into it. Now unzip
anticamp.zip into the new anticamp subdir, answering "yes to all" if it
asks you whether or not to overwrite files. Enter the subdir and run
QCCDOS. A file will be created called "progs.dat", which is what Quake
looks for. To use the mod, run Quake with "-game anticamp".
To recompile AntiCamper later on, just run QCCDOS again (after making
any desired changes to the code -- see Optional Settings).
Optional Settings
-----------------
You don't have to change any of this stuff if you just want to use
the defaults. But for those who (like me) are never satisfied until
they have tweaked something to perfection, read on.
NOTE: All of these involve recompiling AntiCamper to generate a new
progs.dat. For instructions on how to do this, see "How To Install".
ALSO, some settings require the user to "comment out" lines of code.
This is done by putting two forward slashes // at the start of the
line you wish to remove, using a text editor. DON'T delete any code,
in case you want to restore the original setting later.
*Item respawn sounds for camper-sensitive items can be enabled. I hate
these personally, but I know some people like them. Just comment out
line 12 in items.qc.
*Camper/sniper warning sounds can be turned off. I'm not totally sure
these are a good idea; they can give away a player's position in a
deathmatch. On the other hand, they make sure that the player notices
the warning. If you don't want to use them, you need to comment out
lines 190 and 236 in anticamp.qc. The camper warning uses a barking-dog
sound, and the sniper warning is the Ogre starting his chainsaw.
*All weapons, armor, and powerups can be tagged as camper-sensitive by
modifying lines 44-57 in items.qc.
*Item detection radii can be assigned to maps on an individual basis.
For instance, if there's one map where players are getting "false
positives" (i.e. busted even though they weren't camping), you could
decrease all items' detection zones for that level. Instructions on
how to do this are in lines 66-74 and 91-97 in anticamp.qc.
*Item think times can also be set differently for each level. Info on
how this is accomplished can be found in lines 116-118 of anticamp.qc.
Altering think times is the most powerful way to increase/decrease
camper sensitivity on a level.
*The connection message may be disabled by commenting out line 1018
in client.qc.
Please send me feedback about what settings work well in deathmatch!
If I get enough suggestions, I will change the defaults in the next
version of AntiCamper.
AntiSniper
----------
Also included in this mod is AntiSniper, a piece of code that lets you
eliminate sniping on home-brewed maps. AntiSniper searches the map
for a special entity called a sniper detector, and if it finds any,
it causes them to act like camper-sensitive items. They search the
area around themselves, and if the same player is loitering for too
long they issue a sniper warning, then kill them as per AntiCamper.
AntiSniper is totally optional; if it doesn't find any sniper-detection
points on the map, it shuts itself down. Note: try not to let sniper
detectors overlap detection radii, or they tend to cancel each other
out within the zone of overlap.
To take advantage of AntiSniper, you must create or modify a map so
that it has sniper detectors. Sniper detectors are entities with
classname 'info_null' and targetname 'sniper_detector'. They can be
customized by setting various fields: 'speed' determines the distance
they can see players from if they have line-of-sight, 'count' is their
sighting distance without LOS, 'dmg' is their average think time (this
varies to +/- 0.5 seconds), and 'message' is the string printed in
warnings and busts. Set these fields in your map editor; if it
doesn't support them, you'll have to text-edit the .map file manually.
Sample .map entry for a sniper-detection point:
{
"classname" "info_null"
"targetname" "sniper_detector"
"message" "YOSEMITE"
"speed" "600"
"count" "150"
"dmg" "6"
"origin" "176 80 -168"
}
This would make a sniper detector located at coordinates '176 80 -168'
with LOS range 600 and no-LOS range 150, which checks for snipers every
5.5-6.5 seconds. If it busted somebody it would bprint "x IS CAMPING AT
YOSEMITE", and it issues warnings in the form "**SNIPER WARNING FROM
YOSEMITE". You should set the message string to make it as unambiguous
as possible, e.g. "THE TOP PLATFORM".
You don't need to set all of these fields if you wish to use the
default values. The defaults are:
warning string: (**SNIPER WARNING FROM) "SNIPER DETECTOR"
LOS detection range: 800
no-LOS range: 250
average think time: 8
But you do have to set the classname, targetname, and origin fields.
Why did I use the info_null entity instead of just making my own?
Well, I tried that, but if you run the resulting map without AntiCamper,
Quake gives you all sorts of ugly error messages because it doesn't
have a spawn function for sniper detectors. I figured info_null was
pretty safe. AFAIK it has no effect on lighting or gameplay. However,
if you want to use them, AntiSniper will detect and use map entities
with classname "sniper_detector" (although the targetname must also be
set to "sniper_detector"). Just be aware that if you use these instead
of info_null, running the map without AntiCamper will generate a lot of
garbage upon worldspawn.
Integrating AntiCamper Into an Existing Mod Package
---------------------------------------------------
I designed AntiCamper to be as modular as possible. All you have to do
in order to bundle it into your own servermod code is the following:
1) Include anticamp.qc in your progs.src. Put it right above items.qc.
2) Look through the file changes.txt, where I documented all my mods.
3) Cut and paste my code from defs.qc, items.qc, client.qc, and misc.qc
into the same places in your own files. Any place that I made
additions to id's code I put the comment //#Harlequin# and a brief
description of the addition. I didn't remove any of the original
code (but I did alter some of it, so check carefully).
I encourage other coders to use my work, and I will be happy to address
any questions/comments/problems/feedback you might have. Email me at:
dtebben@alumni.caltech.edu.
Known Bugs
----------
None.
Copyright and Distribution Information
--------------------------------------
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
For a copy of the GNU General Public License, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Credits
-------
id Software, for setting the trend of user-configurable games, elevating
shareware to its rightful place, and consistently being the best at what
they do.
Jonathan Jessup (jjessup@visuallink.com), for early ideas and playtesting.